Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Лекція
Предмет:
Delphi

Частина тексту файла

Лекція №6 З курсу: «Застосування засобів ООП в лінгвістичних задачах» 4.5. Типи методів1 1 Тейксейра, Стив, Пачеко, Ксавье. Borland Delphi 6. Руководство разработчика. Стр. 128 Методи об’єкта можуть бути описані як статичні (static), віртуальні (virtual), динамічні (dynamic) або як методи обрабки повідомлень (message). Розглянемо наступний приклад: TFoo = class procedure IAmAStatic; procedure IAmAVirtual; virtual; procedure IAmADynamic; dynamic; procedure IAmAMessage(var M: TMessage); message wm_SomeMessage; end; 4.5.1 Статичні методи Статичний метод (static) IAmAStatic працює так само як звичайна процедура або функція. Цей тип методів встановлюється за замовчуванням. Адреса такого методу відома вже на стадії компіляції, і компілятор в коді програми оформляє всі виклики даного методу як статичні. Такі методи працюють швидше інших, але не можуть бути перевантажені з метою поліморфізма об’єктів. 4.5.2 Віртуальні методи Метод IAmAVirtual оголошений як віртуальний (virtual). Виклик таких методів із_за можливості їх перевантаження складніший, чим виклик статичного методу, так як під час компіляції адреса конкретного метода що викликається не відомий. Для рішення цієї задачи компілятор будує таблицю віртуальних методів (VMT — Virtual Method Table), яка забезпечує визначення адреси метода в процесі виконання програми. VMT містить всі віртуальні методи пробатька і віртуальні методи самого об’єкта, тому віртуальні методи використовують більший об’єм пам’яті, чим методи динамічні, однак їх виклик відбувається швидше. 4.5.3 Динамічні методи Динамічні (dynamic) методи IAmADynamic в цілому подібні до віртуальних методів, але обслуговуються іншою диспетчерською системою. Кожному динамічному методу компілятор назначає унікальне число і використовує його разом з адресою метода для побудови таблиці динамічних методів (DMT — Dynamic Method Table). На відміну від VMT, DMT містить методи лише даного об’єкта, завдяки чому забезпечується економія пам’яті що використовується, але сповільнюється виклик методу, оскільки для пошуку його адреси, швидше всього, буде переглянута не одна DMT в ієрархії об’єктів. 4.5.4 Методи обробки повідомлень Методи обробки повідомлень (message_handling) IAmAMessage. Для оголошення методів обробки повідомлень викорисовується директива message, яка вказує компілятору, що даний метод є динамічним, і його зміщення в таблиці динамічних методів визначається ім’ям повідомлення, яке вказане після диретиви. Такі методи створюються для реакції на ті або інші повідомлень Windows. procedure WMHelp(var Message: ThelpMessage); message WM_HELP; Особливості оголошення методів обробки повідомлень: - в оголошенні МОП повинна використовуватися директива message; - безпосередньо за директивою message повинна бути вказана ціла константа, яка сприймається як динамічний індекс метода; - МОП можуть бути ппрочедурами; - МОП мають тільки один параматер, який повинен бути параметром- змінною; - ім’я метода, ідентифікатор і тип параметра МОП могуть бути довільними; - для перевизначення МОП використовується не директива override, а директива message з тим самим індексом, як і у попереднього метода. 4.5.5 Перевизначення методів Перевизначення (overriding) методів в Object Pascal реалізує концепцію поліморфізма. Це дозволяє змінити поведінку метода від спадкоємця до спадкоємця. Перевизначення метода можливо тільки в тому випадку, якщо спочатку він був оголошений як virtual або dynamic. Для перевизначення методу при його оголошення замість ключових слів virtual або dynamic необхідно вказати ключеве слово override. Розглянемо приклад перевизначення методів IAmAVirtual и IAmADynamic. TFooChild = class(TFoo) procedure IAmAVirtual; override; procedure IAmADynamic; override; procedure IAmAMessage(var M: TMessage); message wm_SomeMessage; end; Директива override приводить до заміщення стрічки опису...
Антиботан аватар за замовчуванням

17.02.2013 19:02

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини